package com.ag.zhh.service;

import java.util.List;
import java.util.Set;

import com.ag.contactTree.TreeNode;
import com.ag.contactTree.service.LocalTreeService;
import com.ag.contactTree.service.TreeService;
import com.ag.zhh.dao.ContactDAO;
import com.ag.zhh.dao.UserDeptContactDAO;
import com.ag.zhh.vo.Contact;
import com.ag.zhh.vo.Dept;
import com.ag.zhh.vo.UserDept;
import com.ag.zhh.vo.UserDeptContact;

public class ContactService {
	
	/**
	 * 联系人维护，需要修改
	 * @param contact
	 * @param dId
	 * @param adminIf
	 */
	public void saveOrUpdateDeptContact(UserDeptContact contact, String dId,
			boolean adminIf) {
		// TODO Auto-generated method stub

		UserDept dept = (UserDept) treeService.getTreeNodeById(dId).getBindData();
		//new
		//更新树
		UserDeptContact conta= null;
		Set<UserDeptContact> contacts = dept.getTbUsers();
		for (UserDeptContact o : contacts) {
			if (o.getUId().equals(contact.getUId())) {
				conta = o;
				break;
			}
		}
		
		if(conta == null) {//增加
			contacts.add(contact);
		}else {//更新
			contacts.remove(conta);
			contacts.add(contact);
		}
		
		//更新树end
		
		//更新数据库
		//contact.setDept(dept);						//设置联系人的部门
		contactDAO.saveOrUpdateContact(contact);
		
//		//old
//		if (adminIf) {
//			// 更新树（完成）
//			DeptAdmin deptAdmin = null;
//			Set<DeptAdmin> admins = dept.getDeptAdmins();
//			for (DeptAdmin dAdmin : admins) {
//				if (contact.getCId().equals(dAdmin.getDadminId())) {
//					deptAdmin = dAdmin;
//					break;
//				}
//			}
//			if (deptAdmin == null) {// 增加
//				Set<Contact> contacts = dept.getContacts();
//				for (Contact c : contacts) {
//					if (c.getCId().equals(contact.getCId())) {
//						contacts.remove(c);
//						break;
//					}
//				}
//				System.out.println("ContactService-----saveOrUpdateDeptContact:增加负责人");
//				deptAdmin = new DeptAdmin();
//				deptAdmin.setDadminId(contact.getCId());
//				admins.add(deptAdmin);
//			}
//
//			deptAdmin.setContact(contact);
//
//			deptAdmin.setDept(dept);
//			// 保存部门负责人
//			// contactDAO.saveOrUpdateContact(contact);
//			deptAdminDAO.saveOrUpdateDeptAdmin(deptAdmin);
//
//		} else {
//			// 更新树（未完成）
//			boolean exist = false;
//			Set<Contact> contacts = dept.getContacts();
//			for (Contact c : contacts) {
//				if (c.getCId().equals(contact.getCId())) {
//					exist = contacts.remove(c);
//					break;
//				}
//			}
//			if(!exist){
//				Set<DeptAdmin> admins = dept.getDeptAdmins();
//				for (DeptAdmin dAdmin : admins) {
//					if (contact.getCId().equals(dAdmin.getDadminId())) {
//						exist = admins.remove(dAdmin);
//						break;
//					}
//				}
//			}
//			contact.setDept(dept);
//			contacts.add(contact);
//			if(exist) {
//				System.out.println("ContactService-----saveOrUpdateDeptContact:更新联系人");
//			}else {
//				System.out.println("ContactService-----saveOrUpdateDeptContact:增加联系人");
//			}
//			// 保存部门联系人
//			deptAdminDAO.saveOrUpdateDeptContact(contact);
//		}

	}

	public void deleteContact(String CId,String dId) {
		UserDeptContact contact = new UserDeptContact();
		contact.setUId(CId);
		contactDAO.deleteUserDeptContact(contact);
		//更新树节点的联系人
		UserDept node =(UserDept)treeService.getTreeNodeById(dId).getBindData();
		for(UserDeptContact c:node.getTbUsers())
		{
			System.out.println("树的联系人: "+c.getUName());
			if(c.getUId().equals(CId)) node.getTbUsers().remove(c);
			
		}
	}
	public List<UserDeptContact> findContactByName(String name)
	{
		if(name==null) return null;
		System.out.println("*********************要查的人："+name+"**********************************");
		return contactDAO.findContactByName(name);
 
		
	}
	public UserDeptContact findCotnactByCId(String CId) {
		return contactDAO.findById(CId);
	}

	private LocalTreeService treeService;

	private UserDeptContactDAO contactDAO;

	public UserDeptContactDAO getContactDAO() {
		return contactDAO;
	}

	public void setContactDAO(UserDeptContactDAO contactDAO) {
		this.contactDAO = contactDAO;
	}

	public LocalTreeService getTreeService() {
		return treeService;
	}

	public void setTreeService(LocalTreeService treeService) {
		this.treeService = treeService;
	}

	


}

